/* Diese Klasse ergibt die Mittelwert von allen ausgeliehenen 
 * Buechern je nach Sachgebiet. Es benoetigt eine Liste von
 * vorhandenen und ausgeliehenen Buecher der Bibliothek.
 * 
 * Datei : AusleiheMittelwert.java     Autor : Kouende Steeve
 * Datum : 12.12.2011 
 */

package statistik;                     /* diese package beinhaltet
                                        * alle notwendige klasse,
                                        * die zur Ausfuehrung diese 
                                        * Klasse benoetigt werden 
                                        */

import java.util.ArrayList;
import java.util.List;

/* die oeffentlichen Daten von der Klasse AusleiheMittelwert sind :
 * 
 * public List <Integer> b_bestand (Wie viele mal ein Buch 
 *                                  ausgeliehen ist)
 * public List <Float> b_frequenz (Wie viel mal ein Buch im Vergleich
 *                                 zu den anderen Buechern 
 *                                 ausgeliehen ist)
 * public List <Float> mittelwertAus (Wie ein Buch im Mittelwert 
 *                                    ausgeliehen ist)
 * ausMediumSG sa;
 * mediumSG newMediumSGM;
 * ausMediumSG newAusMedium;
 * 
 * Privaten Daten
 * 
 * String s; 
 * int m, count; 
 * float result, h,a;
 * 
 * Methoden
 * 
 * public void ausgelieheneBuch ()
 * public void hauefigkeitBuch ()
 * public void Mittelwert ()
 * public void Anzeige ()
 */

public class AusleiheMittelwert
{
  public static void main (String[] args)
  {
    
    AusleiheMittelwert ausMittelwert = new AusleiheMittelwert (2);
    ausMittelwert.ausgelieheneBuch ();
    ausMittelwert.hauefigkeitBuch ();
    ausMittelwert.mittelwert ();
    ausMittelwert.Anzeige ();
  }

  float buchbestand, frequenz;
  int count, i, j;
  public List<Integer> b_bestand = new ArrayList ();
  public List<Float> b_frequenz = new ArrayList ();
  public ArrayList<Float> mittelwertAus = new ArrayList<Float> ();
  
  ausMediumSG sa;
  mediumSG newMediumSGM;
  ausMediumSG newAusMediumSGM;
 
  public AusleiheMittelwert (int sachgebiet)
  {
    sa = new ausMediumSG (sachgebiet);
    newMediumSGM = new mediumSG (sachgebiet);
    ausMediumSG newAusMediumSGM = new ausMediumSG (sachgebiet);
  }

  public void ausgelieheneBuch ()
  {
    
    for (i = 0; i < newMediumSGM.gibMedium ().size (); i++)
    {
      String s = (String) newMediumSGM.gibMedium ().get (i);
      int m = 0;

      for (j = 0; j < 
          sa.gibAusgelieheneMedium ().size (); j++)
      {
     /* prueft ob ein medium ist in der ausgeliehenen List
      * oder nicht
      */
        if (s.equals 
            (sa.gibAusgelieheneMedium ().get (j)))                                                                                                                                     
        {
       /* Wenn Ja zaehlt es wie viele mal 
        * das Medium ausgeliehen ist 
        */
          m++;
        }
      }
      b_bestand.add (m);    
    }   
  }

  /* Die funktion liefert, wie oft ein Buch im Vergleich zu andere
   * ausgeliehen ist
   */
  public void hauefigkeitBuch ()
  {
    float result, h, a;
    int count;

    for (count = 0; count < 
        newMediumSGM.gibMedium ().size (); count++)
    {
   // wie oft ein Buch ist ausgeliehen
      h = (float) b_bestand.get (count); 
                                         
   // die Zahl von gesamte  ausgeliehenen Buecher
      a = (float) sa.gibAusgelieheneMedium ().size (); 
                                            
   // Die Haeufigkeit pro Buch von ausgeliehen Buecher
      result = (float) ( (h / a) * 100); 
   // List von Haufigkeit der ausgeliehenen Buecher                               
      b_frequenz.add (result);                                      
    }   
  }

  /* Wie ein Buch im Mittelwert ausgeliehen ist
   * Sie ist parameterlos und hat keinen Rueckgabewert
   */
  public void mittelwert ()
  {
    float result;
    
    for (count = 0; count < newMediumSGM.gibMedium ().size (); 
        count++)
    {
      buchbestand = (float) b_bestand.get (count);
      frequenz = (float) b_frequenz.get (count);
      result = (float) ( (frequenz / 
          sa.gibAusgelieheneMedium ().size ()) * 100);
      mittelwertAus.add (result);   
    }
  }
  
  /* die funktion gibt uns im prozent wie ein Buch
   *  im Mittelwert ausgeliehen ist
   */
  public void Anzeige ()
  {
    int count;

    for (count = 0; count < newMediumSGM.gibMedium ().size ();
        count++)
    {
      System.out.printf ("Buch %s hat %.2f prozent \n",
          newMediumSGM.gibMedium ().get (count), 
          mittelwertAus.get (count));
    }
  }
}
